package com.yuanqi.repository;

import com.yuanqi.domain.RetailProduct;
import com.yuanqi.domain.ProductStatus;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 零售商品数据访问层
 */
@Repository
public interface RetailProductRepository extends JpaRepository<RetailProduct, Long> {
    
    /**
     * 根据商品ID查找零售商品
     */
    Optional<RetailProduct> findByProductId(Long productId);
    
    /**
     * 根据SKU ID查找零售商品
     */
    List<RetailProduct> findBySkuId(Long skuId);
    
    /**
     * 根据状态查找零售商品
     */
    List<RetailProduct> findByStatus(ProductStatus status);
    
    /**
     * 查找低库存商品（基于最小库存预警）
     */
    @Query("SELECT rp FROM RetailProduct rp WHERE rp.minStock > 0 AND rp.status = 'Active'")
    List<RetailProduct> findLowStockProducts();
    
    /**
     * 查找缺货商品（基于最小库存为0）
     */
    @Query("SELECT rp FROM RetailProduct rp WHERE rp.minStock = 0 AND rp.status = 'Active'")
    List<RetailProduct> findOutOfStockProducts();
    
    /**
     * 根据商品ID查找（替代商品名称查询）
     */
    @Query("SELECT rp FROM RetailProduct rp WHERE rp.productId = :productId AND rp.status = 'Active'")
    List<RetailProduct> findByProductIdAndStatus(@Param("productId") Long productId);
    
    /**
     * 查找启用的零售商品
     */
    List<RetailProduct> findByStatusOrderByCreatedAtDesc(ProductStatus status);
}
